准备工作
- 下载ndk。下载地址
新建一个NdkDemo。
- 配置ndk,file->Project Structure。
- 在gradle.properties文件追加
android.useDeprecatedNdk=true
- 新建
com.kkk.jni
包用于放置含有native方法的类。在包中新建jniMathKit.class。
1 | package com.kkk.jni; |
- 新建jni文件夹。右击java文件夹New->Folder->JNI Folder。
点击Rebuild Project,切换目录结构Andorid——>Project。如果在../app/build/下有intermediates继续下一步。
打开 终端 terminal,进入到../app/build/intermediates/classes/debug/ 执行
javah com.kkk.jni.jniMathKit
,可以发现在/debug文件夹下多个一个.h文件。把.h文件复制到jni文件夹(与java文件夹同层)中。
- 在对应的module的build.gradle文件中defaultConfig中添加ndk配置
1 | defaultConfig { |
再次Rebuild Project。
打开jniMathKit,把鼠标移动到getSum上,alt+enter,可以发现多一个Create function Java_com_kkk_jni_jniMathKit_getSum选项,点击创建。此时会创建一个jniDemo.c类,实现.h中的方法如下。
1 | #include "com_kkk_jni_jniMathKit.h" |
- 最后在mainAcitity中调用。编译运行。
1
2
3
4
5
6protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
jniMathKit jniMathKit= new jniMathKit();
Log.e("sb", "sum :"+ jniMathKit.getSum(5,6) );
}